import { createStore } from 'redux';

// action 就是一个简单的对象 { type, payload }
// type 是用来找到哪个方法，payload 使用装修改 state 所需的数据的
const reduxStr = window.sessionStorage.getItem('redux-state');

const initialState = (reduxStr && JSON.parse(reduxStr)) || {
    token: '',
    profile: {},
    acls: [],
};

// dispatch 函数，派发一个 loginSuccess 对象时，就会触发 reducer 来修改 state
// dispatch({ type: 'loginSuccess', payload: { token, profile, acls } })

// reducer 是一个纯函数：只要你给相同的输入，就一定会产生相同的输出
function reducer(state = initialState, action) {
    if (action.type === 'loginSuccess') {
        console.log('loginSuccess', { ...state, ...action.payload });
        return { ...state, ...action.payload };
    }
    return state;
}

// createStore 时需要接收一个参数，
const store = createStore(reducer);

// 导出，别的地方使用
export default store;
